
        <html>
			<head>
			     <title>从技术角度深入剖析：改号软件，电话号码任意显示，伪造来电显示 - 核攻击</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/342">http://drops.wooyun.org/tips/342</a></h1>
				
      <p>
        <p>这是去年写的一篇文章<a href="http://lcx.cc/?i=2484">http://lcx.cc/?i=2484</a>，转过来了，如有不妥，还请指正。</p>

<hr />

<p>刚才看到乌云有人发帖问：<a href="http://zone.wooyun.org/content/197">网上流传的修改来电的软件实现原理是什么？</a></p>

<p>关于这个东西，我还真了解一点（本人涉猎甚广，啥都喜欢研究一番）……</p>

<p>其实很多年前就有此类技术分析文档，几年前我曾看过一篇技术分析文章，详细讲了这个实现原理，年代久远，尼玛文章找不到了，但是大概内容还记得点，结合搜索，整理了点东西出来。</p>

<p>估计有很多人知道，这种技术是由于不同网络中转发数据用的网关在作怪，但是并不明白更底层的原理，本文将从最底层、最基础的电话传输协议、数据帧开始讲……</p>

<!--more-->

<p>关于修改来电显示号码的原理，这个真的是十分古老的东西了，老古董、老掉牙的玩意儿了，起码有二十多年了（和我差不多大，-_-|||），要弄清楚这个原理，首先还得了解下来电号码显示的原理。</p>

<p>其实嘛，修改来电显示这个玩意儿，任何一个电话、通讯、网络电话（VoIP电话）、手机制造公司的工程师、技师都晓得，就和黑客必须晓得IP地址是啥一样，而且他们都可以轻松地做到，无任何难度……</p>

<p>首先了解一点电话网络中数据传输的知识，资料如下：</p>

<hr />

<p>以下资料摘自：<a href="http://wenku.baidu.com/view/a595897da26925c52cc5bf2e.html">来电显示原理，电话主叫号码信息的识别及实现</a></p>

<h3>电话主叫号码信息的识别及实现</h3>

<p>主叫号码信息识别及传送(CID, Calling Identity Delivery, 呼叫身份传递)，是指交换机将主叫用户的主叫号码及呼叫的日期、时间等信息传送给被叫用户，由被叫号用户的主叫号码显示器将信息显示出来并存储。以便用户摘机前就知道到底谁打电话来，或外出回来后查阅谁来过电话。（90年代以前的电话网络居然没有来电显示这个功能，这尼玛怎么用的，难以想象……）</p>

<p>它是由具有主叫号码信息识别服务功能的交换机与具有主叫号码显示服务功能的终端相配合来实现，在终端上可以显示主叫电话机的号码、呼叫时间等信息。</p>

<h4>一、CID技术产生背景</h4>

<p>美国贝尔通信研究室（BELLCORE）首先引入话音频带数据通信的调制解调方式来实现CID业务，并在1990年提出了相关技术建议（TR-TS-000031， ISUE3，1990年1月），该建议经过多次修改后被称为Bell202建议。数据传送采用了移频键控（FSK）方式，通常称为移频键控方式。</p>

<p>与此同时，欧洲以瑞典为代表的研究机构为能在自己生产的交换机上方便地实现主叫号码传送（Calling Number Delivery）业务，电话终端与交换机之间采用双音多频号码传送方式作为解决方案，通常称为双音多频方式。</p>

<p>经过多年的研究和发展，许多国家认为移频键控方式有较好的发展前景，纷纷以此为基础来制定本国的标准。到目前为止，采用移频键控方式的国家和地区有美国、加拿大、比利时、英国、西班牙、日本、新加坡和中国等。</p>

<p>…… 省略无关内容 ……</p>

<h4>二、CID业务功能电话网上开展CID业务，必须考虑各方权益。</h4>

<p>主叫用户可以根据自己的意愿在一定权限内控制是否向被叫用户传送自己的号码。被叫用户在登记主叫信息显示权限后，交换机应向被叫用户传送主叫信息。</p>

<p>1、主叫用户叫信息显示权限</p>

<p>主叫用户主叫信息显示权即主叫用户是否允许向被叫用户显示主叫信息。</p>

<p>作为主叫用户，发出呼叫时可以有<code>允许CID和限制CID两种选择</code>。</p>

<p>（1）允许显示</p>

<p>主叫用户的一切正常拨号，均为允许CID的呼叫，应向被叫用户所在终端交换机传送主叫信息。这类用户也可以要求在某次呼叫时不向被叫用户显示主叫信息，这时需要在该次呼叫拨号之前加拨一标志号码（如&#42;&#42;，发端交换机收到&#42;&#42;后，判别定为该次呼叫的CID业务被限制，送出限制标志，终端交换机不将该次呼叫的主叫号码送到被叫终端设备。</p>

<p>（2）限制显示</p>

<p>主叫用户的一切正常拨号，均为限制CID的呼叫，其主叫号码不送到被叫用户终端设备。这类用户也可以要求在某次呼叫时向被叫用户显示主叫号码，这时需要在该次呼叫拨号之前加拨一标志号码（如&#42;&#42;，发端交换机收到&#42;&#42;后，判定为该次呼叫的CID业务被允许，送出允许标志，终端交换机将该次呼叫的主叫号码送到被叫终端设备。</p>

<pre><code>无论主叫是允许CID用户还是限制CID用户，当呼叫的对方是110，119，120，122等特服终端时，其主叫号码一定要传送到被叫终端上。 
</code></pre>

<p>2、被叫用户主叫信息显示权限</p>

<p>被叫用户主叫信息显示权限即被叫用户能否显示主叫信息。</p>

<p>（1）用户登记主叫信息显示权限</p>

<p>用户登记了主叫信息显示权限后，在作为被叫用户时，终端交换机应向用户传送相应的显示信息。</p>

<p>·在一次呼叫有主叫号码，则显示“号码+日期+时间”；</p>

<p>·在一次呼叫中终端交换机没有收到主叫号码，则显示“O”；·在一次呼叫中如果不允许显示主叫号码，则显示“P”。</p>

<p>（2）用户不登记主叫信息显示权限</p>

<p>如不登记此权限，交换机不向此用户发送任何信息。</p>

<h4>三、CID业务的基本技术</h4>

<p>采用移频键控传送方式的交换机应具备与该方式有关的硬件环境，以及数据处理和传送所必要的软件环境。</p>

<p>1、主叫号码及标志在局间的传送</p>

<p>主叫号码信息显示是由终端交换机传给被叫用户终端设备的，因此终端交换机应能顺利得到主叫方号码，这就要求发端交换机将主叫号码等信息通过局间信令系统（如七号信信）传送给终端交换机，随主叫号码一起传送的还有一个标志码，表示主叫方的意愿。如“X”表示主叫号码可以传送给被叫用户；“Y”表示主叫码不愿意传送给被叫用户。</p>

<p>2、主叫信息从终端交换机到用户的传送</p>

<p>终端交换得到主叫号码信息后，根据被叫用户特征以及主叫用户标志码来控制主叫号码信息的传送，可以有下列几种处理方式：</p>

<p>·被叫是未申请CID服务的用户时，不传送任何信息；</p>

<p>·被叫是CID用户时，主叫标志是“Y”时，传送“P”；</p>

<p>·被叫是CID用户时，主叫标志是“X”时，传送“主叫号码+时间+日期”；</p>

<p>·被叫是110，119，120，122等特服用户时，无论主叫标志是“X”还是“Y”均传送主叫号码的信息。</p>

<p>终端交换机在传送主叫号码信息前，还要根据被叫用户目前所处的状态，采用不同的传送序列和格式。以保证传送能顺利进行。</p>

<p>（1）被叫话机在挂机状态</p>

<p>对于采用移频键控方式的交换机，终端交换机将主叫号码信息在第一次振铃和第二次振铃间隔期间，将主叫号码信息以移频键控（FSK）的方式传送给被叫用户终端设备。</p>

<p>（2）被叫话机处在通话状态</p>

<p>当被叫用户登记某些业务（如呼叫等待）时，<code>若被叫用户处在通话状态下，则终端交换机仍可向被叫用户传送主叫信息。（也就是如今多卡多待手机可以同时接听、拨打所依靠的条件。）</code></p>

<p>例如，具有CID功能的用户乙与用户甲通话时，又有用户丙呼叫用户乙，则在用户乙终端设备上显示用户丙的识别信息。</p>

<p>…… 省略无关内容 ……</p>

<p>来电号码显示实际上是现代电信交换网络可以提供的一项服务业务。就其机理而言，是指交换机对用户提供来电号码专用格式的数据的传送，而用户终端利用符合数据解码格式要求的端机进行接收和显示。</p>

<p>当交换机发出第一次振铃信号后，紧接着发出一串调制信号（现用的主要有FSK和DTMF两种格式的信号），此信号包含着拨号方的电话号码、日期、时间、姓名等信息。</p>

<p>来电号码显示器在每一次振铃信号的唤醒下，开始接收FSK信号，经解码芯片（如Motorola 的RC145447）获得其中信息，由单片机进行格式处理并在屏幕上显示出来。</p>

<p>同样，若传输过来的是DTMF来电号码信息，只需由DTMF解码芯片来进行数据解码，即可显示DTMF的来电号码。</p>

<p>…… 省略无关内容 ……</p>

<hr />

<p>以上就是电话通讯协议的极少一部分内容，资料太长，各位看的是不是有点晕了，没关系，我画个简单的图给大家解释下。</p>

<p>其实嘛，这个玩意儿和互联网通讯协议有很多相似的地方，我画个图：</p>

<pre><code>主叫 → 电话线路 → 终端交换机（主叫的网关） → 运营商骨干网络 → 终端交换机（被叫的网关） → 电话线路 → 被叫 
</code></pre>

<p>各个设备的信息显示权限如下：</p>

<p>主叫：可以控制是否向被叫用户传送自己的号码，<code>也就是手机系统设置的那个“隐藏号码”功能</code>，但是该功能需要运营商支持，但是现在的运营商都是默认传输的，所以是个摆设……</p>

<p>终端交换机（主叫的网关）：有权控制是否发送主叫号码（110，119，120，122等特殊用户除外，必须发送！），并且可以为所欲为的修改，当然，正规运营商的机器是不会这么干的……</p>

<p>运营商骨干网络：传输数据，不作任何修改。<code>（公安监听电话就在此处哦，亲~）</code></p>

<p>终端交换机（被叫的网关）：权限同上，但是这里是<code>判断被叫有没有开通来电显示功能</code>，开通了就发，没开通就不发。<code>是的，没错，就尼玛这个破功能，运营商每个月还收个3元的来电显示费用，卧槽……</code></p>

<p>被叫：判断是否有附加信息数据包，有就显示，否则不进行任何操作……</p>

<p>我们从以上的资料中得知，<code>电话通讯网络不是依靠电话号码进行用户识别的</code>，而来电显示功能则只是，在交换机发出第一次振铃信号后，<code>附加了包含一个主叫用户信息的数据包而已</code>，包含着拨号方的电话号码、日期、时间、姓名等信息，来电号码显示器在每一次振铃信号的唤醒下，开始接收FSK信号，经解码芯片获得其中信息，由单片机进行格式处理并在屏幕上显示出来。</p>

<p>就好像在互联网中通讯的时候，我向某个QQ号发送消息的时候，我可以选择是否发送昵称（电话号码等信息），而且这个昵称是完全可以修改的。</p>

<p>既然知道了传输原理，那么改号软件是如何做到的呢？？？</p>

<p>这里就要了解一下VoIP（IP电话、网络电话）的知识了……</p>

<hr />

<p>VOIP：<a href="http://baike.baidu.com/view/1475.htm">http://baike.baidu.com/view/1475.htm</a></p>

<p>VoIP（Voice over Internet Protocol）简而言之就是将模拟声音讯号（Voice）数字化，以数据封包（Data Packet）的形式在 IP 数据网络 (IP Network）上做实时传递。</p>

<p>VoIP最大的优势是能广泛地采用Internet和全球IP互连的环境，提供比传统业务更多、更好的服务。</p>

<p>VoIP可以在IP网络上便宜的传送语音、传真、视频、和数据等业务，如统一消息、虚拟电话、虚拟语音/传真邮箱、查号业务、Internet呼叫中心、Internet呼叫管理、电视会议、电子商务、传真存储转发和各种信息的存储转发等。</p>

<p>VoIP相对比较便宜，为什么？</p>

<p>VoIP电话不过是互联网上的一种应用，<code>网络电话不受管制</code>。因此，从本质上说，VoIP电话与电子邮件，即时讯息或者网页没有什么不同，它们均能在经过了互联网连接的机器间进行传输。这些机器可以是电脑，或者无线设备，比如手机或者掌上设备等等。</p>

<p>为什么VoIP服务有些要收钱，有些却免费？</p>

<p>VoIP服务不仅能够沟通VoIP用户（就像QQ语音聊天一样），而且也可以和电话用户通话，比如使用传统固话网络以及无线手机网络的用户。对这部分通话，VoIP服务商必须要给固话网络运营商以及无线通讯运营商支付通话费用。这部分的收费就会转到VoIP用户头上。网上的VoIP用户之间的通话可以是免费的。</p>

<p>近年来，网络通信势不可挡，qq、飞信等即时通讯软件冲击着传统的电话通信方式，从而也造就了很多网络新贵，众投资者企望在网络通讯中分一杯羹。继qq、飞信等软件之后，近年来开发的网络电话，被企业和个人广泛应用于国内外长途通话中。</p>

<p>与此同时，近年来一些网络电话“话吧”在学校、居民住宅区、工业区等迅速兴起。与几年前兴起的传统“IP公话超市”不同的是，网络电话的运营成本更为低廉，且进入门槛更低。只要一台电脑、一条宽带、几台电话机加上一个计费软件就可以操作，网络公司向加盟者或者运营商提供技术支持即可。由于像平常打电话一样方便，网络“话吧”迅速占据中低收入和外来打工人员的市场，并对传统电话业务形成冲击。</p>

<p>因为成本低廉，市场广阔，VOIP成为一种“暴利”的投资项目，但由于没有政策支持，因此仍然存在运营和管理上的漏洞，发展前景尚不明朗，投资需谨慎。经过几年的发展，虽然网络电话被广泛使用，但网络电话业务目前还处于“灰色地带”，法律没有限制也没有允许，而市面上出现的网络电话“话吧”也并没有营业执照。另外，网络电话本身也有先天缺陷，通话质量受到网络好坏的影响，停电时候无法使用，清晰度上也与传统的固话有差距，其次，<code>网络电话还存在被偷听偷录的风险</code>。</p>

<p>…… 省略无关内容 ……</p>

<hr />

<p>又是很长的一段资料，各位又看的懵了吧，呵呵呵，我用简单的语言概括下……</p>

<p>其实VoIP就是网络语音聊天，把音频数据通过互联网从一台电脑传输到另一台电脑，无国界、远程传输，就像QQ语音一样，双方都装个软件就行了……</p>

<p>那么您可能会问了：二货！你胡扯什么呢？你扯了这么多，这尼玛和改号软件有毛关系？？？？？？</p>

<p>莫急，莫急，你马上就豁然开朗了！！！！（估计聪明的读者已经想到了！　↖(^o^)↗）</p>

<p>为了清楚地描述，我再来画个图：</p>

<p>VoIP：</p>

<pre><code>用户A → 计算机 → ISP运营商接口 → 互联网骨干网络 → ISP运营商接口 → 计算机 → 用户B
</code></pre>

<p>尼玛，这个运行模式就不解释了吧？你丫天天在用，俗称：上网！！！！</p>

<p>亲，还记得电话网络的图吗？？</p>

<p>电话网络（稍微简化了下）：</p>

<pre><code>用户A　→　电话　→　主叫的网关　→　运营商骨干网络　→　被叫的网关　→　电话　→　用户B 
</code></pre>

<p>哦呵呵呵呵，如果VoIP和电话，这两个完全不相干的网络结合的话，会发生什吗事呢？</p>

<p>那么，神奇的地方来了！！！亲，看图：</p>

<pre><code>用户A　→　电脑　→　上网接口　→　互联网骨干网络　→　上网接口　→　电脑　→　用户B
　　　　　　　　　　　　　　　　　　↘　　　　↗
　　　　　　　　　　　　　　　　　 上车、下车网关
　　　　　　　　　　　　　　　　　　↗　　　　↘
用户C　→　电话　→　主叫网关　→　运营商骨干网络　→　被叫网关　→　电话　→　用户D
</code></pre>

<p>上车、下车网关：</p>

<p>也称为中继网关、落地网关，通过 IP 接口与用户端的语音接入网关相连，通过E1接口与局用程控交换机相连。</p>

<p>中继网关将 IP 分组包与 PCM 的相互转换，从而实现语音接入网关同公关电话网 (PSTN) 的互连互通。</p>

<p>将一路呼叫从传统电话线转接到IP网上的网关一般称为上车网关，而将IP网上的呼叫转接进电话网的那个则称为下车，或者落地网关。</p>

<p>该网关需要从电话运营商处申请，然后连接你的服务器即可。</p>

<p>现在，电话网络和互联网可以互通互联了。</p>

<p>再回到改号的话题上，既然你无法控制电话网络网关，那么从网络核心设备（落地网关）上进行呼叫，我们只要在信令上送出一个虚拟的号码，被叫的所在地设备便会认为这是真实的主叫号码，所以它给被叫的来电显示，就是我这个虚拟的号码，这是一个很简单的网络欺骗。</p>

<p><code>移动运营商当然可以做到</code>，但我相信没有哪个运营商会这么做，但我们应该看到，与运营商的网络设备相连接的还有许多服务提供商（SP），他们数量众多，良莠不齐，难说不会有人违规操作；当然还有其它运营商的来话，如固定电话网络的来电，或国外的来电，他们也都可以做到。</p>

<p>这算是运营商网络的一个漏洞，而且还不好修补。</p>

<p>流程可以简单的概括为：</p>

<p>1、首先在智能手机或电脑上预置一个VoIP软件，该软件指向某预置网关，该网关为非法落地网关。</p>

<p>2、并且该网关允许并接收客户端发送指定主叫号码，并将此号码传递给被叫号码所属网关。</p>

<p>3、拨电话吧，随意伪造号码。</p>

<p>并且<code>不受110等特殊号码限制</code>，因为从“源网关”处，就已经伪造了号码，所以你可以给110打一个来电号码是110的电话……</p>

<p>扯了一大堆，核心的东西就在这个落地网关上！不只是互联网，不同的网络之间通讯都有类似的网关。</p>

<p>这个网关夹在主叫方与电信公司的网关中间，修改主叫号码后再把修改结果送入电信公司的网关系统中。</p>

<p>他们自己有一个平台，这个平台与运营商有接口，或者与国外的一些IP运营商存在接口。</p>

<p>如果你需要，首先会给你的电脑或手机装一个软件，建立一个与他这个平台的通道，但你使用这项功能的时候，就等于接入了他的平台，他的平台再帮你实现这模拟任意号码呼叫。</p>

<p>最后，总结一下：</p>

<p>“来电显示修改”是利用了网络IP电话网关技术，先来看一下普通座机上来电号码显示的原理，首先交换机传送电话拨打方的包含来电号码的数据，而接听方户终端进行接收和显示，当然这些数据必须符合专用的解码格式。</p>

<p>当交换机发出第一次振铃信号后，便接着发出一串调制信号，此信号包含着拨号方的电话号码、日期、时间、姓名等信息。</p>

<p>来电号码显示器在每一次振铃信号的唤醒下，开始接收信号，经解码芯片获取其中的信息，最终处理过后在屏幕上显示出来。</p>

<p>这样一来，拨打方发出呼叫后，首先要传至电信公司的交换系统，通过该系统的身份核查后，被叫方才能接收到信号。</p>

<p>“平台”实际上就是网络IP电话，电信公司设置的“电话网关”就相当于传统通话的交换系统。</p>

<p>所谓的来电显示修改，也制作了一个网关，夹在主叫方与电信公司的网关中间，用自己的网关随意修改主叫号码，再把修改结果送入电信公司的网关系统中。目前，兜售修改软件的公司大都用的这个原理。</p>

<p>由于这些电话是通过中转平台或者电脑软件拨打，并不是两方之间的连接，因此只要按显示的号码拨过去，对方是无法接听的。</p>

<p>目前，<code>互联网上的所有网络电话，例如：Skype、UUCall 等公司，全部都可以做到修改来电号码</code>，但他们为了合法，所以只允许你修改为你自己的手机号码，并且要求手机短信验证后，才可以修改。</p>

<p>实际上，他们的管理员可以任意修改……</p>

<p>而这些伪造来电号码的公司，和这些网络电话公司的运行模式完全一致，只不过他们是接非法业务……</p>

<p>为什么近两年这种伪造来电号码的非法业务越来越多？</p>

<p>因为现在网络越来越发达，速度越来越快，成本越来越低，上手简单，而且又可以和电话网络互通互联，这比从电话公司处伪造号码（最早的伪造方式）容易的不是一点半点，促进了这类公司的发展，他们和雨后春笋一样冒了出来……</p>

<p>如果从网络安全的角度来讲，传统的以手机、电话号码作为验证用户身份的方式（例如某某手机密保），已经彻底崩溃了……</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          